package com.iplant.wms.service.po.asn;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.iplant.base.po.BasePO;
import com.iplant.base.po.enums.DBSchemas;
import com.iplant.base.utils.annotation.field.DBField;
import com.iplant.base.utils.annotation.condition.DBCondition;
import com.iplant.base.utils.annotation.join.DBJoin;
import com.iplant.base.utils.annotation.join.multi.DBJoinMulti;
import com.iplant.base.utils.annotation.po.DBBasePO;
import com.iplant.base.utils.general.CalendarTool;
import com.iplant.wms.service.basicenum.wpo.WMSPurchaseOrderStatus;

import java.io.Serializable;
import java.util.Calendar;

/**
 * 到货通知单明细    基本作业单元  收货主单据
 *
 * @author femi
 */

@DBBasePO(TableName = "wms_arrivalnoticeitem", Name = false, Active = false, Schemas = DBSchemas.WMS,
        CheckName = {"Code"}, CodeAuto = true, CodePrefix = "ASNI{yyMM}-")
public class WMSArrivalNoticeItem extends BasePO implements Serializable {

    /**
     * 序列化
     */
    private static final long serialVersionUID = 1L;


    @DBCondition
    @DBField(Update = false)
    public int FactoryID = 0;

    @DBJoin(name = "Code", tableName = "fmc_factory", tableAsName = "f1",
            Schemas = DBSchemas.Basic, MainTableField = "FactoryID")
    public String FactoryCode = "";

    @DBJoin(name = "Name", tableName = "fmc_factory", tableAsName = "f1",
            Schemas = DBSchemas.Basic, MainTableField = "FactoryID")
    public String FactoryName = "";


    @DBCondition(CompareType = DBCondition.DBCompareType.in)
    @DBField(CheckValue = true)
    public int ArrivalNoticeID = 0;
    /**
     * 通知单
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "ArrivalNoticeCodeEQ")
    @DBField
    public String ArrivalNoticeCode = "";


    @DBCondition
    @DBField
    public int PurchaseOrderID = 0;

    /**
     * 采购单编号
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "PurchaseOrderCodeEQ")
    @DBField
    public String PurchaseOrderCode = "";

    @DBCondition
    @DBField
    public int PurchaseOrderItemID = 0;

    /**
     * 采购单行编号
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "PurchaseOrderItemCodeEQ")
    @DBField
    public String PurchaseOrderItemCode = "";


    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "ProjectNoEQ")
    @DBField
    public String ProjectNo = "";

    /**
     * 项目名称
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "ProjectNameEQ")
    @DBField
    public String ProjectName = "";

    /**
     * 通知单明细 类型
     */
    @DBField
    public int TypeID = 0;
    @DBJoin(name = "Name", tableName = "wms_bill_type", Schemas = DBSchemas.WMS, tableAsName = "bt1", MainTableField = "TypeID")
    public String TypeName = "";

    @DBJoin(name = "Code", tableName = "wms_bill_type", Schemas = DBSchemas.WMS, tableAsName = "bt1", MainTableField = "TypeID")
    public String TypeCode = "";


    /**
     * 默认收货仓库
     */

    @DBCondition
    @DBField
    public int StoreID = 0;

    @DBJoin(name = "Name", tableName = "wms_store", tableAsName = "st4",
            JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "StoreID")
    public String StoreName = "";
    @DBJoin(name = "Code", tableName = "wms_store", tableAsName = "st4",
            JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "StoreID")
    public String StoreCode = "";


    /**
     * 货主 就是客户
     */
    @DBCondition
    @DBField
    public int CustomerID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "crm_customer", tableAsName = "c1",
            Schemas = DBSchemas.Basic, MainTableField = "CustomerID")
    public String CustomerCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "crm_customer", tableAsName = "c1",
            Schemas = DBSchemas.Basic, MainTableField = "CustomerID")
    public String CustomerName = "";

    /**
     * 供应商
     */
    @DBCondition
    @DBField
    public int SupplierID = 0;
    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "crm_customer", tableAsName = "c2",
            Schemas = DBSchemas.Basic, MainTableField = "SupplierID")
    public String SupplierCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "crm_customer", tableAsName = "c2",
            Schemas = DBSchemas.Basic, MainTableField = "SupplierID")
    public String SupplierName = "";


    @DBCondition
    @DBField(CheckValue = true)
    public int MaterialID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "mss_material", tableAsName = "m2", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "MaterialID")
    public String MaterialCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "mss_material", tableAsName = "m2", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "MaterialID")
    public String MaterialName = "";


    @DBCondition
    @DBField
    public int PackageRuleID = 0;

    /**
     * 包装规则
     */
    @DBJoin(name = "Code", tableName = "mss_packagerule", tableAsName = "pr1", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "PackageRuleID")
    public String PackageRuleCode = "";

    @DBJoin(name = "Name", tableName = "mss_packagerule", tableAsName = "pr1", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "PackageRuleID")
    public String PackageRuleName = "";


    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "ReceivedTimeStart",
            ParamName2 = "ReceivedTimeEnd")
    @DBField
    public Calendar ReceivedTime = Calendar.getInstance();

    /**
     * 预期物料数量   物料数量
     */
    @DBField
    public double MaterialNumber = 0.0;

    /**
     * 实际收货数量
     */
    @DBField
    public double ReceivedMaterialNumber = 0.0;


    /**
     * 收货交接员
     */
    @DBField
    public int ReceiverID = 0;

    @DBJoinMulti(Name = "Name", TableName = "mbs_user", MainTableField = "ReceiverID")
    public String ReceiverName = "";


    /**
     * 收货单位
     */
    @DBField
    public int ReceiveUnit = 0;

    /**
     * 辅计量单位
     */
    @DBJoin(name = "Name", tableName = "mss_unit", tableAsName = "unt1", Schemas = DBSchemas.Basic,
            MainTableField = "ReceiveUnit")
    public String ReceiveUnitText = "";

    /**
     * 物料CY单位
     */
    @DBField
    public int MaterialUnitID = 0;

    @DBJoin(name = "Name", tableName = "mss_unit", tableAsName = "unt2", Schemas = DBSchemas.Basic,
            MainTableField = "MaterialUnitID")
    public String MaterialUnitName = "";

    @DBField
    public double MaterialUnitRate = 1;
    /**
     * 拒收数量
     */
    @DBField
    public double RejectedNum = 0;
    @DBField
    public String RejectedReason = "";

    /**
     * 超额收货百分比
     */
    @DBField
    public double ReceivedRate = 0;

    /**
     * 破损数量
     */
    @DBField
    public double DamagedNum = 0;

    /**
     * 体积
     */
    @DBField
    public int TotalVolume = 0;

    @DBField
    public int TotalGrossWeight = 0;

    @DBField
    public int TotalNetWeight = 0;

    @DBField
    public double TotalPrice = 0.0;


    /**
     * 收货库位
     */
    @DBCondition
    @DBField
    public int ReceiveStationID = 0;

    @DBJoin(name = "Name", tableName = "wms_store_station", tableAsName = "sta1", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "ReceiveStationID")
    public String ReceiveStationName = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "ReceiveStationCodeEQ")
    @DBJoin(name = "Code", tableName = "wms_store_station", tableAsName = "sta1", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "ReceiveStationID")
    public String ReceiveStationCode = "";


    /**
     * 计划入库库位
     */
    @DBCondition
    @DBField
    public int PlanStationID = 0;
    @DBJoin(name = "Name", tableName = "wms_store_station", tableAsName = "sta2", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "PlanStationID")
    public String PlanStationName = "";
    @DBJoin(name = "Code", tableName = "wms_store_station", tableAsName = "sta2", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "PlanStationID")
    public String PlanStationCode = "";


    @DBField
    public String UserDefine1 = "";
    @DBField
    public String UserDefine2 = "";
    @DBField
    public String UserDefine3 = "";


    /**
     * 冻结原因   不知如何处理，遗留
     */
    @DBField
    public int FreezeReason = 0;
    @DBField
    public String FreezeReasonRemark = "";

    /**
     * 批次属性记录ID  同物料同一批收货的批次属性相同   单QRCode不同
     */
    @DBCondition
    @DBField
    public int BatchRecordID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "RuleCode", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String BatchRuleCode = "";


    @DBCondition
    @DBJoin(name = "Code", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String BatchRecordCode = "";


    /**
     * 批次属性01 生产日期
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "ProductDateStart",
            ParamName2 = "ProductDateStartEnd")
    @DBJoin(name = "ProductDate", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public Calendar ProductDate = CalendarTool.getBasicDate();

    /**
     * 批次属性02 失效日期
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "ExpireDateStart",
            ParamName2 = "ExpireDateEnd")
    @DBJoin(name = "ExpireDate", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public Calendar ExpireDate = CalendarTool.getBasicDate();


    /**
     * 批次属性03 入库日期  收货即入库  上架并不改变入库日期
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "StockDateStart",
            ParamName2 = "StockDateEnd")
    @DBJoin(name = "StockDate", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public Calendar StockDate = CalendarTool.getBasicDate();

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr04", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")

    public String LotAttr04 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr05", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr05 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr06", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr06 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr07", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr07 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr08", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr08 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr09", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr09 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr10", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr10 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr11", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr11 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr12", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr12 = "";


    /**
     * 质检状态
     */
    @DBField
    public int IPTStatus = 0;


    /**
     * 到货单状态，前端需要判断是否已生成过收货单
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.in)
    @DBField
    public int Status = 0;

    public String StatusText = "";


    @JsonProperty("ArrivalNoticeCode")
    public String getArrivalNoticeCode() {
        return ArrivalNoticeCode;
    }

    public void setArrivalNoticeCode(String arrivalNoticeCode) {
        ArrivalNoticeCode = arrivalNoticeCode;
    }


    @JsonProperty("PurchaseOrderCode")
    public String getPurchaseOrderCode() {
        return PurchaseOrderCode;
    }

    public void setPurchaseOrderCode(String purchaseOrderCode) {
        PurchaseOrderCode = purchaseOrderCode;
    }

    @JsonProperty("PurchaseOrderItemCode")
    public String getPurchaseOrderItemCode() {
        return PurchaseOrderItemCode;
    }

    public void setPurchaseOrderItemCode(String purchaseOrderItemCode) {
        PurchaseOrderItemCode = purchaseOrderItemCode;
    }


    @JsonProperty("TypeID")
    public int getTypeID() {
        return TypeID;
    }

    public void setTypeID(int typeID) {
        TypeID = typeID;
    }

    @JsonProperty("TypeName")
    public String getTypeName() {
        return TypeName;
    }

    public void setTypeName(String typeName) {
        TypeName = typeName;
    }

    @JsonProperty("TypeCode")
    public String getTypeCode() {
        return TypeCode;
    }

    public void setTypeCode(String typeCode) {
        TypeCode = typeCode;
    }


    @JsonProperty("StoreID")
    public int getStoreID() {
        return StoreID;
    }

    public void setStoreID(int storeID) {
        StoreID = storeID;
    }

    @JsonProperty("StoreName")
    public String getStoreName() {
        return StoreName;
    }

    public void setStoreName(String storeName) {
        StoreName = storeName;
    }

    @JsonProperty("StoreCode")
    public String getStoreCode() {
        return StoreCode;
    }

    public void setStoreCode(String storeCode) {
        StoreCode = storeCode;
    }

    @JsonProperty("CustomerID")
    public int getCustomerID() {
        return CustomerID;
    }

    public void setCustomerID(int customerID) {
        CustomerID = customerID;
    }

    @JsonProperty("CustomerName")
    public String getCustomerName() {
        return CustomerName;
    }

    public void setCustomerName(String customerName) {
        CustomerName = customerName;
    }

    @JsonProperty("CustomerCode")
    public String getCustomerCode() {
        return CustomerCode;
    }

    public void setCustomerCode(String customerCode) {
        CustomerCode = customerCode;
    }

    @JsonProperty("SupplierID")
    public int getSupplierID() {
        return SupplierID;
    }

    public void setSupplierID(int supplierID) {
        SupplierID = supplierID;
    }

    @JsonProperty("SupplierCode")
    public String getSupplierCode() {
        return SupplierCode;
    }

    public void setSupplierCode(String supplierCode) {
        SupplierCode = supplierCode;
    }

    @JsonProperty("SupplierName")
    public String getSupplierName() {
        return SupplierName;
    }

    public void setSupplierName(String supplierName) {
        SupplierName = supplierName;
    }


    @JsonProperty("MaterialName")
    public String getMaterialName() {
        return MaterialName;
    }

    public void setMaterialName(String materialName) {
        MaterialName = materialName;
    }

    @JsonProperty("BatchRuleCode")
    public String getBatchRuleCode() {
        return BatchRuleCode;
    }

    public void setBatchRuleCode(String batchRuleCode) {
        BatchRuleCode = batchRuleCode;
    }

    @JsonProperty("PackageRuleCode")
    public String getPackageRuleCode() {
        return PackageRuleCode;
    }

    public void setPackageRuleCode(String packageRuleCode) {
        PackageRuleCode = packageRuleCode;
    }

    @JsonProperty("PackageRuleName")
    public String getPackageRuleName() {
        return PackageRuleName;
    }

    public void setPackageRuleName(String packageRuleName) {
        PackageRuleName = packageRuleName;
    }

    @JsonProperty("ReceivedTime")
    public Calendar getReceivedTime() {
        return ReceivedTime;
    }

    public void setReceivedTime(Calendar receivedTime) {
        ReceivedTime = receivedTime;
    }

    @JsonProperty("MaterialNumber")
    public double getMaterialNumber() {
        return MaterialNumber;
    }

    public void setMaterialNumber(double materialNumber) {
        MaterialNumber = materialNumber;
    }

    @JsonProperty("ReceivedMaterialNumber")
    public double getReceivedMaterialNumber() {
        return ReceivedMaterialNumber;
    }

    public void setReceivedMaterialNumber(double receivedMaterialNumber) {
        ReceivedMaterialNumber = receivedMaterialNumber;
    }

    @JsonProperty("ReceiveUnit")
    public int getReceiveUnit() {
        return ReceiveUnit;
    }

    public void setReceiveUnit(int receiveUnit) {
        ReceiveUnit = receiveUnit;
    }

    @JsonProperty("MaterialUnitID")
    public int getMaterialUnitID() {
        return MaterialUnitID;
    }

    public void setMaterialUnitID(int materialUnitID) {
        MaterialUnitID = materialUnitID;
    }

    @JsonProperty("MaterialUnitName")
    public String getMaterialUnitName() {
        return MaterialUnitName;
    }

    public void setMaterialUnitName(String materialUnitName) {
        MaterialUnitName = materialUnitName;
    }

    @JsonProperty("MaterialUnitRate")
    public double getMaterialUnitRate() {
        return MaterialUnitRate;
    }

    public void setMaterialUnitRate(double materialUnitRate) {
        MaterialUnitRate = materialUnitRate;
    }

    @JsonProperty("RejectedNum")
    public double getRejectedNum() {
        return RejectedNum;
    }

    public void setRejectedNum(double rejectedNum) {
        RejectedNum = rejectedNum;
    }

    @JsonProperty("RejectedReason")
    public String getRejectedReason() {
        return RejectedReason;
    }

    public void setRejectedReason(String rejectedReason) {
        RejectedReason = rejectedReason;
    }

    @JsonProperty("ReceivedRate")
    public double getReceivedRate() {
        return ReceivedRate;
    }

    public void setReceivedRate(double receivedRate) {
        ReceivedRate = receivedRate;
    }

    @JsonProperty("DamagedNum")
    public double getDamagedNum() {
        return DamagedNum;
    }

    public void setDamagedNum(double damagedNum) {
        DamagedNum = damagedNum;
    }

    @JsonProperty("TotalVolume")
    public int getTotalVolume() {
        return TotalVolume;
    }

    public void setTotalVolume(int totalVolume) {
        TotalVolume = totalVolume;
    }

    @JsonProperty("TotalGrossWeight")
    public int getTotalGrossWeight() {
        return TotalGrossWeight;
    }

    public void setTotalGrossWeight(int totalGrossWeight) {
        TotalGrossWeight = totalGrossWeight;
    }

    @JsonProperty("TotalNetWeight")
    public int getTotalNetWeight() {
        return TotalNetWeight;
    }

    public void setTotalNetWeight(int totalNetWeight) {
        TotalNetWeight = totalNetWeight;
    }

    @JsonProperty("TotalPrice")
    public double getTotalPrice() {
        return TotalPrice;
    }

    public void setTotalPrice(double totalPrice) {
        TotalPrice = totalPrice;
    }

    @JsonProperty("ReceiveStationID")
    public int getReceiveStationID() {
        return ReceiveStationID;
    }

    public void setReceiveStationID(int receiveStationID) {
        ReceiveStationID = receiveStationID;
    }

    @JsonProperty("ReceiveStationCode")
    public String getReceiveStationCode() {
        return ReceiveStationCode;
    }

    public void setReceiveStationCode(String receiveStationCode) {
        ReceiveStationCode = receiveStationCode;
    }

    @JsonProperty("ReceiveStationName")
    public String getReceiveStationName() {
        return ReceiveStationName;
    }

    public void setReceiveStationName(String receiveStationName) {
        ReceiveStationName = receiveStationName;
    }

    @JsonProperty("PlanStationID")
    public int getPlanStationID() {
        return PlanStationID;
    }

    public void setPlanStationID(int planStationID) {
        PlanStationID = planStationID;
    }

    @JsonProperty("PlanStationCode")
    public String getPlanStationCode() {
        return PlanStationCode;
    }

    public void setPlanStationCode(String planStationCode) {
        PlanStationCode = planStationCode;
    }

    @JsonProperty("PlanStationName")
    public String getPlanStationName() {
        return PlanStationName;
    }

    public void setPlanStationName(String planStationName) {
        PlanStationName = planStationName;
    }

    @JsonProperty("UserDefine1")
    public String getUserDefine1() {
        return UserDefine1;
    }

    public void setUserDefine1(String userDefine1) {
        UserDefine1 = userDefine1;
    }

    @JsonProperty("UserDefine2")
    public String getUserDefine2() {
        return UserDefine2;
    }

    public void setUserDefine2(String userDefine2) {
        UserDefine2 = userDefine2;
    }

    @JsonProperty("UserDefine3")
    public String getUserDefine3() {
        return UserDefine3;
    }

    public void setUserDefine3(String userDefine3) {
        UserDefine3 = userDefine3;
    }

    @JsonProperty("FreezeReason")
    public int getFreezeReason() {
        return FreezeReason;
    }

    public void setFreezeReason(int freezeReason) {
        FreezeReason = freezeReason;
    }

    @JsonProperty("FreezeReasonRemark")
    public String getFreezeReasonRemark() {
        return FreezeReasonRemark;
    }

    public void setFreezeReasonRemark(String freezeReasonRemark) {
        FreezeReasonRemark = freezeReasonRemark;
    }

    @JsonProperty("BatchRecordID")
    public int getBatchRecordID() {
        return BatchRecordID;
    }

    public void setBatchRecordID(int batchRecordID) {
        BatchRecordID = batchRecordID;
    }

    @JsonProperty("ProductDate")
    public Calendar getProductDate() {
        return ProductDate;
    }

    public void setProductDate(Calendar productDate) {
        ProductDate = productDate;
    }

    @JsonProperty("ExpireDate")
    public Calendar getExpireDate() {
        return ExpireDate;
    }

    public void setExpireDate(Calendar expireDate) {
        ExpireDate = expireDate;
    }

    @JsonProperty("StockDate")
    public Calendar getStockDate() {
        return StockDate;
    }

    public void setStockDate(Calendar stockDate) {
        StockDate = stockDate;
    }

    @JsonProperty("LotAttr04")
    public String getLotAttr04() {
        return LotAttr04;
    }

    public void setLotAttr04(String lotAttr04) {
        LotAttr04 = lotAttr04;
    }

    @JsonProperty("LotAttr05")
    public String getLotAttr05() {
        return LotAttr05;
    }

    public void setLotAttr05(String lotAttr05) {
        LotAttr05 = lotAttr05;
    }

    @JsonProperty("LotAttr06")
    public String getLotAttr06() {
        return LotAttr06;
    }

    public void setLotAttr06(String lotAttr06) {
        LotAttr06 = lotAttr06;
    }

    @JsonProperty("LotAttr07")
    public String getLotAttr07() {
        return LotAttr07;
    }

    public void setLotAttr07(String lotAttr07) {
        LotAttr07 = lotAttr07;
    }

    @JsonProperty("LotAttr08")
    public String getLotAttr08() {
        return LotAttr08;
    }

    public void setLotAttr08(String lotAttr08) {
        LotAttr08 = lotAttr08;
    }

    @JsonProperty("LotAttr09")
    public String getLotAttr09() {
        return LotAttr09;
    }

    public void setLotAttr09(String lotAttr09) {
        LotAttr09 = lotAttr09;
    }

    @JsonProperty("LotAttr10")
    public String getLotAttr10() {
        return LotAttr10;
    }

    public void setLotAttr10(String lotAttr10) {
        LotAttr10 = lotAttr10;
    }

    @JsonProperty("LotAttr11")
    public String getLotAttr11() {
        return LotAttr11;
    }

    public void setLotAttr11(String lotAttr11) {
        LotAttr11 = lotAttr11;
    }

    @JsonProperty("LotAttr12")
    public String getLotAttr12() {
        return LotAttr12;
    }

    public void setLotAttr12(String lotAttr12) {
        LotAttr12 = lotAttr12;
    }

    @JsonProperty("IPTStatus")
    public int getIPTStatus() {
        return IPTStatus;
    }

    public void setIPTStatus(int IPTStatus) {
        this.IPTStatus = IPTStatus;
    }

    @JsonProperty("ProjectNo")
    public String getProjectNo() {
        return ProjectNo;
    }

    public void setProjectNo(String projectNo) {
        ProjectNo = projectNo;
    }


    @JsonProperty("FactoryID")
    public int getFactoryID() {
        return FactoryID;
    }

    public void setFactoryID(int factoryID) {
        FactoryID = factoryID;
    }

    @JsonProperty("FactoryCode")
    public String getFactoryCode() {
        return FactoryCode;
    }

    public void setFactoryCode(String factoryCode) {
        FactoryCode = factoryCode;
    }

    @JsonProperty("FactoryName")
    public String getFactoryName() {
        return FactoryName;
    }

    public void setFactoryName(String factoryName) {
        FactoryName = factoryName;
    }

    @JsonProperty("ProjectName")
    public String getProjectName() {
        return ProjectName;
    }

    public void setProjectName(String projectName) {
        ProjectName = projectName;
    }

    @JsonProperty("ArrivalNoticeID")
    public int getArrivalNoticeID() {
        return ArrivalNoticeID;
    }

    public void setArrivalNoticeID(int arrivalNoticeID) {
        ArrivalNoticeID = arrivalNoticeID;
    }

    @JsonProperty("PurchaseOrderID")
    public int getPurchaseOrderID() {
        return PurchaseOrderID;
    }

    public void setPurchaseOrderID(int purchaseOrderID) {
        PurchaseOrderID = purchaseOrderID;
    }

    @JsonProperty("PurchaseOrderItemID")
    public int getPurchaseOrderItemID() {
        return PurchaseOrderItemID;
    }

    public void setPurchaseOrderItemID(int purchaseOrderItemID) {
        PurchaseOrderItemID = purchaseOrderItemID;
    }

    @JsonProperty("MaterialID")
    public int getMaterialID() {
        return MaterialID;
    }

    public void setMaterialID(int materialID) {
        MaterialID = materialID;
    }

    @JsonProperty("MaterialCode")
    public String getMaterialCode() {
        return MaterialCode;
    }

    public void setMaterialCode(String materialCode) {
        MaterialCode = materialCode;
    }

    @JsonProperty("PackageRuleID")
    public int getPackageRuleID() {
        return PackageRuleID;
    }

    public void setPackageRuleID(int packageRuleID) {
        PackageRuleID = packageRuleID;
    }

    @JsonProperty("ReceiveUnitText")
    public String getReceiveUnitText() {
        return ReceiveUnitText;
    }

    public void setReceiveUnitText(String receiveUnitText) {
        ReceiveUnitText = receiveUnitText;
    }

    @JsonProperty("BatchRecordCode")
    public String getBatchRecordCode() {
        return BatchRecordCode;
    }

    public void setBatchRecordCode(String batchRecordCode) {
        BatchRecordCode = batchRecordCode;
    }


    @JsonProperty("Status")
    public int getStatus() {
        return Status;
    }


    public void setStatus(int status) {
        Status = status;
    }

    @JsonProperty("StatusText")
    public String getStatusText() {
        StatusText = WMSPurchaseOrderStatus.getEnumType(Status).getLabel();
        return StatusText;
    }

    public void setStatusText(String statusText) {
        StatusText = statusText;
    }


    @JsonProperty("ReceiverID")
    public int getReceiverID() {
        return ReceiverID;
    }

    public void setReceiverID(int receiverID) {
        ReceiverID = receiverID;
    }

    @JsonProperty("ReceiverName")
    public String getReceiverName() {
        return ReceiverName;
    }

    public void setReceiverName(String receiverName) {
        ReceiverName = receiverName;
    }
}
